CLEAR ,80000 Version$="Ver. 2.50, 20.09.1990" WINDOW CLOSE 1 DECLARE FUNCTION AutoRequest% LIBRARY DECLARE FUNCTION AllocMem& LIBRARY SCREEN 1,640,255,2,2 WINDOW 2,"MaxiDAT "+Version$,,23,1 PALETTE 0,0,0,0 : PALETTE 1,0,0,0 : PALETTE 3,0,0,0 FOR i%=1 TO 10 MENU i%,0,0,"" NEXT i% FOR i=0 TO 1 STEP 0.01 PALETTE 1,i,i,i PALETTE 2,i,i,i PALETTE 3,i,i,i NEXT i WIDTH 78 ON BREAK GOSUB Unterbrechung BREAK ON ON ERROR GOTO Fehler LINE INPUT "Ist ein Drucker angeschlossen ([J]a/[N]ein) ? ",D$ CLS COLOR 3 PRINT "Einen Moment bitte! Ich lese die .bmap-Files ..." IF LEFT$(UCASE$(D$),1)="J" THEN Drucker=1 END IF MENU 1,0,1,"Projekt " MENU 1,1,1,"Datei anlegen " MENU 1,2,1,"Daten eingeben " MENU 1,3,1,"Datei benutzen " MENU 1,4,1,"Neustart " MENU 1,5,0,"--------------------" MENU 1,6,1,"E N D E " MENU 2,0,Drucker,"Drucker " MENU 2,1,1,"Drucke alle Daten mit Kopf " MENU 2,2,1,"Drucke alle Daten ohne Kopf " MENU 2,3,1,"Nur bestimmte Daten drucken " MENU 3,0,1,"Diskette " MENU 3,1,1,"Aktuelles Unterverzeichnis " MENU 3,2,1,"Aktuelles Laufwerk " MENU 3,3,1,"Zeige Directory " MENU 3,4,1,"File löschen (ACHTUNG!) " MENU 4,0,1,"Grafik " MENU 4,1,1,"Grafikdatei erstellen " MENU 4,2,1,"Grafik zeichnen " MENU 5,0,1,"Infos " MENU 5,1,1,"Programminformationen " MENU 6,0,1,"Fenster " MENU 6,1,1,"Aufräumen " FOR i=1 TO 0 STEP -0.01 PALETTE 1,i,i,i:PALETTE 2,i,i,i NEXT i LIBRARY "exec.library" LIBRARY "graphics.library" LIBRARY "intuition.library" IF Drucker=1 THEN LOCATE 5,5 PRINT "Bitte den Drucker einschalten !" LPRINT LOCATE 5,5 PRINT "Der Drucker ist initialisiert !" END IF OPEN "mConfig" FOR INPUT AS #1 INPUT #1,x$ INPUT #1,Drive$ INPUT #1,Pfad$ INPUT #1,d1$ INPUT #1,d2$ FOR i=0 TO 3 INPUT #1,r,g,b c(i,0)=r:c(i,1)=g:c(i,2)=b NEXT i CLOSE #1 DIM Laenge(11),Bezeichnung$(11),In$(11),Ein$(11) RastPort&=WINDOW(8) GOSUB MenueVervollstaendigen GOSUB FadeIn Hauptprogramm: ON MENU GOSUB Men MENU ON ON TIMER(1) GOSUB Zeit Hauptschleife: WINDOW CLOSE 1 MENU ON CLS WT$="MaxiDAT "+Version$+CHR$(0) ST$="MaxiDAT - Screen"+CHR$(0) CALL SetWindowTitles(WINDOW(7),SADD(WT$),SADD(ST$)) TIMER ON COLOR 1 LOCATE 1,1 txt$=" M a x i D A T" CALL Text(RastPort&,SADD(txt$),LEN(txt$)) LOCATE 2,1 txt$=" -----------------------" CALL Text(RastPort&,SADD(txt$),LEN(txt$)) LOCATE 4,1 txt$=" Version : "+Version$ CALL Text(RastPort&,SADD(txt$),LEN(txt$)) GOSUB Datum LOCATE 6,1 txt$=" Datum : "+DTM$ CALL Text(RastPort&,SADD(txt$),LEN(txt$)) SchreibeZeit: LOCATE 7,1 txt$=" Zeit : "+TIME$ CALL Text(RastPort&,SADD(txt$),LEN(txt$)) txt$=" Freier Speicher:"+STR$(FRE(-1))+" Bytes" LOCATE 8,1 CALL Text(RastPort&,SADD(txt$),LEN(txt$)) IF FI=1 THEN FI=0:TIMER OFF:MENU OFF:GOSUB FadeIn:MENU ON:TIMER ON SLEEP SLEEP dummy$=INKEY$ : dummy$=INKEY$ : dummy$=INKEY$ GOTO Hauptschleife Zeit: RETURN SchreibeZeit Men: TIMER OFF TITEL=MENU(0) PUNKT=MENU(1) MenuStrip&=PEEKL(WINDOW(7)+28) CALL ClearMenuStrip(WINDOW(7)) IF TITEL=1 THEN IF PUNKT=1 THEN GOSUB FadeOut GOSUB Einrichten FI=1 ELSEIF PUNKT=2 THEN GOSUB Eingabe FI=1 ELSEIF PUNKT=3 THEN GOSUB Benutzen CLS FI=1 ELSEIF PUNKT=4 THEN GOSUB Loeschen ELSEIF PUNKT=6 THEN GOSUB Ende END IF ELSEIF TITEL=2 THEN ON PUNKT GOSUB DruckeAlles,DruckeAllesOHNE,DruckeAuswahl ELSEIF TITEL=3 THEN ON PUNKT GOSUB ChangeDir,ChangeDrive,ZeigeDir,DeleteFile ELSEIF TITEL=4 THEN IF PUNKT=1 THEN GOSUB GrafikDateiAnlegen ELSEIF PUNKT=2 THEN FI=1 GOSUB Zeichnen END IF ELSEIF TITEL=5 THEN GOSUB FadeOut GOSUB ProgrammInfo FI=1 ELSEIF TITEL=6 THEN GOSUB Aufraeumen END IF CALL SetMenuStrip(WINDOW(7),MenuStrip&) RETURN Einrichten: w.t$="MaxiDAT. NEUE DATEI DEFINIEREN"+CHR$(0) GOSUB FensterNeuRichten GOSUB LoescheVariablen LINE (0,0)-(640,255),0,bf:CLS COLOR 1,2:PRINT "BEZEICHNUNG EINGEBEN. * = Ende " GOSUB FadeIn WHILE Jn$<>"J" Gesamtlaenge = 0 MENU OFF PRINT :PRINT FOR i=1 TO 11 LOCATE i+2,1 COLOR 1,2 PRINT USING "##";i LOCATE 1,1 PRINT "BEZEICHNUNG EINGEBEN. * = Ende " COLOR 1,0 LOCATE i+2,4 IF i<>11 THEN PRINT Bezeichnung$(i); LOCATE i+2,4 LINE INPUT NeueBezeichnung$ NeueBezeichnung$=LEFT$(NeueBezeichnung$,40) IF NeueBezeichnung$<>"" THEN Bezeichnung$(i)=NeueBezeichnung$ END IF BeLaenge=LEN(Bezeichnung$(i)) IF BeLaenge>Maxbezlaenge THEN Maxbezlaenge=BeLaenge END IF LOCATE i+2,4 PRINT Bezeichnung$(i) PRINT STRING$(20," ") COLOR 1,2 LOCATE 1,1 PRINT "BITTE DIE FELDLÄNGE EINGEBEN! " COLOR 1,0 LOCATE i+2,42 PRINT Laenge(i) LOCATE i+2,42 LINE INPUT Laenge$ ELSE Bezeichnung$(i)="*" Laenge$="1" Fertig=1 END IF NeueLaenge=INT(VAL(Laenge$)) IF NeueLaenge<>0 THEN Laenge(i)=NeueLaenge END IF Fertig=0 IF Bezeichnung$(i)="*" THEN Anzmsk=i Fertig=1 END IF IF Laenge(i)<=0 OR Laenge(i)>50 THEN Laenge(i)=45 END IF LOCATE i+2,42:PRINT " ":LOCATE i+2,42:PRINT Laenge(i) IF Fertig THEN i=16 END IF NEXT i CLS FOR i=1 TO 11 LOCATE i+2,1 COLOR 1,2 PRINT USING "##";i; COLOR 1,0 LOCATE i+2,4 txt$=Bezeichnung$(i) CALL Text(RastPort&,SADD(txt$),LEN(txt$)) LOCATE i+2,42 txt$=STR$(Laenge(i)) CALL Text(RastPort&,SADD(txt$),LEN(txt$)) NEXT i Anzmsk=Anzmsk-1 Jn$="" LOCATE 1,1 PRINT "Sind diese Eingaben richtig ([J]a oder [N]ein) ?"; LINE INPUT "";Jn$ Jn$=LEFT$(UCASE$(Jn$),1) CLS WEND Jn$="" ' fuer naechsten Aufruf loeschen CLS LOCATE 1,1 PRINT "Bitte den Dateinamen eingeben :" LINE INPUT Datinfnam$ GOSUB FadeOut IF Datinfnam$<>"" THEN Datinfnam$="Daten/"+Datinfnam$+".INFOS" OPEN Datinfnam$ FOR OUTPUT AS #2 WRITE #2,Maxbezlaenge WRITE #2,Anzmsk WRITE #2,1 ' Satznummer FOR i=1 TO Anzmsk WRITE #2,Bezeichnung$(i) WRITE #2,Laenge(i) NEXT i CLOSE #2 END IF GOSUB FensterWieVorher RETURN Eingabe: w.t$="MaxiDAT. Dateneingabe"+CHR$(0) GOSUB FensterNeuRichten GOSUB LoescheVariablen LINE (0,0)-(640,255),0,bf:CLS LINE INPUT "Filename ? ";Datnam$ GOSUB FadeOut IF Datnam$="" THEN GOSUB FensterWieVorher:RETURN END IF Datinfnam$=Drive$+Pfad$+Datnam$+".INFOS" Datnam$=Drive$+Pfad$+Datnam$+".DATEN" GOSUB LeseInfos Satz=Satznummer OPEN "r",#1,Datnam$,550 FIELD #1,Laenge(1) AS In$(1),Laenge(2) AS In$(2),Laenge(3) AS In$(3),Laenge(4) AS In$(4),Laenge(5) AS In$(5),Laenge(6) AS In$(6),Laenge(7) AS In$(7),Laenge(8) AS In$(8),Laenge(9) AS In$(9),Laenge(10) AS In$(10),Laenge(11) AS In$(11) CLS : PRINT "Daten eingeben." GOSUB FadeIn WHILE Jn2$<>"N" GOSUB Eing FOR i=1 TO 11 LSET In$(i)=Ein$(i) Ein$(i)="" NEXT i PUT #1,Satz Satz=Satz+1 LOCATE 20,1 Jn2$="" INPUT "Weitere Datensätze eingeben ? (J/N) ";Jn2$ Jn2$=LEFT$(UCASE$(Jn2$),1) WEND GOSUB FadeOut Jn2$="" CLOSE #1 OPEN Datinfnam$ FOR OUTPUT AS #2 WRITE #2,Maxbezlaenge WRITE #2,Anzmsk WRITE #2,Satz FOR i=1 TO Anzmsk WRITE #2,Bezeichnung$(i) WRITE #2,Laenge(i) NEXT i CLOSE #2 GOSUB FensterWieVorher RETURN Benutzen: w.t$="MaxiDAT. Datei benutzen"+CHR$(0) GOSUB FensterNeuRichten GOSUB LoescheVariablen LINE (0,0)-(640,255),0,bf:CLS LINE INPUT "Filename ? ";Datnam$ GOSUB FadeOut IF Datnam$="" THEN GOSUB FensterWieVorher:RETURN END IF RastPort&=WINDOW(8) Datinfnam$=Drive$+Pfad$+Datnam$+".INFOS" Datnam$=Drive$+Pfad$+Datnam$+".DATEN" GOSUB LeseInfos Msatz=Satznummer-1 IF Msatz=0 THEN GOSUB FadeIn PRINT "Diese Datei enthält keine Daten." BEEP PRINT "Taste drücken !" WHILE INKEY$="":WEND GOSUB FadeOut:GOSUB FensterWieVorher RETURN END IF OPEN "r",#1,Datnam$,550 FIELD #1,Laenge(1) AS In$(1),Laenge(2) AS In$(2),Laenge(3) AS In$(3),Laenge(4) AS In$(4),Laenge(5) AS In$(5),Laenge(6) AS In$(6),Laenge(7) AS In$(7),Laenge(8) AS In$(8),Laenge(9) AS In$(9),Laenge(10) AS In$(10),Laenge(11) AS In$(11) Satz=1 CLS Co$="" txt$="File : "+Datnam$+" Datensatz # "+STR$(Satz) LOCATE 1,1 CALL Text(RastPort&,SADD(txt$),LEN(txt$)) txt$="***---------------------===MaxiDAT - Befehle===-------------------------***" LOCATE 2,1 CALL Text(RastPort&,SADD(txt$),LEN(txt$)) txt$="<+> : Nächster Datensatz <-> : Letzter Satz : Gehe zu # " LOCATE 3,1 CALL Text(RastPort&,SADD(txt$),LEN(txt$)) txt$=" : Suchen : Infos zeigen : Editieren " LOCATE 4,1 CALL Text(RastPort&,SADD(txt$),LEN(txt$)) txt$=" : Datensatz löschen

: Satz ausdrucken : Fertig " LOCATE 5,1 CALL Text(RastPort&,SADD(txt$),LEN(txt$)) txt$="***---------------------=======================--------------------------***" LOCATE 6,1 CALL Text(RastPort&,SADD(txt$),LEN(txt$)) GOSUB FadeIn WHILE Co$<>"Q" CLS Co$="" txt$="File : "+Datnam$+" Datensatz # "+STR$(Satz) LOCATE 1,1 CALL Text(RastPort&,SADD(txt$),LEN(txt$)) txt$="***---------------------===MaxiDAT - Befehle===-------------------------***" LOCATE 2,1 CALL Text(RastPort&,SADD(txt$),LEN(txt$)) txt$="<+> : Nächster Datensatz <-> : Letzter Satz : Gehe zu # " LOCATE 3,1 CALL Text(RastPort&,SADD(txt$),LEN(txt$)) txt$=" : Suchen : Infos zeigen : Editieren " LOCATE 4,1 CALL Text(RastPort&,SADD(txt$),LEN(txt$)) txt$=" : Datensatz löschen

: Satz ausdrucken : Fertig " LOCATE 5,1 CALL Text(RastPort&,SADD(txt$),LEN(txt$)) txt$="***---------------------=======================--------------------------***" LOCATE 6,1 CALL Text(RastPort&,SADD(txt$),LEN(txt$)) PRINT GET #1,Satz FOR i=1 TO Anzmsk COLOR 3 txt$=Bezeichnung$(i)+":" LOCATE i+7,1 CALL Text(RastPort&,SADD(txt$),LEN(txt$)) COLOR 2 LOCATE i+7,Maxbezlaenge+4 txt$=In$(i) CALL Text(RastPort&,SADD(txt$),LEN(txt$)) NEXT i COLOR 1 WHILE Co$<>"+" AND Co$<>"-" AND Co$<>"G" AND Co$<>"S" AND Co$<>"R" AND Co$<>"D" AND Co$<>"E" AND Co$<>"P" AND Co$<>"Q" AND Co$<>CHR$(139) AND Co$<>CHR$(31) AND Co$<>CHR$(30) Co$=UCASE$(INKEY$) WEND IF Co$=CHR$(139) THEN REM 139 ist der ASCII-Code der HELP-Taste GOSUB FadeOut WINDOW 5,"MaxiDAT. Befehle beim Benutzen der Datei ... :",,31,1 RastPort&=WINDOW(8) LINE (0,0)-(640,255),0,bf:CLS WINDOW 5:CALL ActivateWindow(WINDOW(7)) txt$="Erklärungen zu den Befehlen :" LOCATE 1,1 CALL Text(RastPort&,SADD(txt$),LEN(txt$)) txt$="=============================" LOCATE 2,1 CALL Text(RastPort&,SADD(txt$),LEN(txt$)) txt$="<+> - Zeige den numerisch nächsten Datensatz" LOCATE 4,1 CALL Text(RastPort&,SADD(txt$),LEN(txt$)) txt$="<-> - Zeige den numerisch letzten Datensatz" LOCATE 5,1 CALL Text(RastPort&,SADD(txt$),LEN(txt$)) txt$=" - Springe zu einem bestimmten Satz" LOCATE 6,1 CALL Text(RastPort&,SADD(txt$),LEN(txt$)) txt$=" - Suche nach Daten (beginnend vom aktuellen Satz." LOCATE 7,1 CALL Text(RastPort&,SADD(txt$),LEN(txt$)) txt$=" Arbeitet auf Wunsch 'case-sensitive'.)" LOCATE 8,1 CALL Text(RastPort&,SADD(txt$),LEN(txt$)) txt$=" - Aktuellen Datensatz verändern." LOCATE 9,1 CALL Text(RastPort&,SADD(txt$),LEN(txt$)) txt$=" - Aktuellen Datensatz löschen." LOCATE 10,1 CALL Text(RastPort&,SADD(txt$),LEN(txt$)) txt$="

- Aktuellen Datensatz ausdrucken." LOCATE 11,1 CALL Text(RastPort&,SADD(txt$),LEN(txt$)) txt$=" - Zurück zum Hauptmenü." LOCATE 12,1 CALL Text(RastPort&,SADD(txt$),LEN(txt$)) txt$="<- - 10 Sätze zurück." LOCATE 13,1 CALL Text(RastPort&,SADD(txt$),LEN(txt$)) txt$="-> - 10 Sätze vorwärts" LOCATE 14,1 CALL Text(RastPort&,SADD(txt$),LEN(txt$)) txt$="- Diese Seite zeigen." LOCATE 15,1 CALL Text(RastPort&,SADD(txt$),LEN(txt$)) txt$="Sie können dieses Window jetzt schon schließen, es kann" LOCATE 17,1 CALL Text(RastPort&,SADD(txt$),LEN(txt$)) txt$="aber auch geöffnet bleiben, während Sie weiterarbeiten." LOCATE 18,1 CALL Text(RastPort&,SADD(txt$),LEN(txt$)) GOSUB FadeIn CALL SizeWindow(WINDOW(7),620-PEEKW(WINDOW(7)+8),180-PEEKW(WINDOW(7)+10)) CALL MoveWindow(WINDOW(7),10-PEEKW(WINDOW(7)+4),30-PEEKW(WINDOW(7)+6)) CALL ClearMenuStrip(WINDOW(7)) w&=WINDOW(7) WINDOW 2 : CALL ActivateWindow(WINDOW(7)) : RastPort&=WINDOW(8) CALL SetWindowTitles(WINDOW(7),SADD(w.t$),-1) CALL WindowToFront(w&) END IF IF Co$="S" THEN WINDOW 9,"Daten suchen ...",(100,170)-(540,230),16,1 LOCATE 2,2 PRINT "In welchem Feld # ?"; LOCATE 3,2 PRINT "Nach welchem Begriff ? "; LOCATE 4,2 PRINT "Case-sensitive [J/N] ?"; LOCATE 5,2 PRINT "Vorwärts, rückwärts, gesamtes File oder aufhören ?"; LOCATE 6,2 PRINT "(V/R/G/Q) ?"; Sfeld: LOCATE 2,22:LINE INPUT Sfeld$:Sfeld=ABS(INT(VAL(Sfeld$))) IF Sfeld=0 THEN Sfeld Such: LOCATE 3,25:LINE INPUT Such$ IF Such$="" THEN Such CaseSensitive: LOCATE 4,26:LINE INPUT Gk$:Gk$=UCASE$(LEFT$(Gk$,1)) IF Gk$<>"J" AND Gk$<>"N" THEN CaseSensitive WoSuchen: LOCATE 6,14:LINE INPUT WoS$:WoS$=UCASE$(LEFT$(WoS$,1)) IF WoS$<>"V" AND WoS$<>"R" AND WoS$<>"G" AND WoS$<>"Q" THEN WoSuchen IF Gk$="N" THEN Gk=1 Such$=UCASE$(Such$) ELSE Gk=0 END IF IF WoS$<>"Q" THEN IF WoS$="V" THEN Start=Satz:Ende=Msatz ELSEIF WoS$="R" THEN Start=1:Ende=Satz ELSEIF WoS$="G" THEN Start=1:Ende=Msatz END IF CLS LOCATE 2,1 PRINT "Duchsuchter Bereich:" PRINT " Start : ";Start PRINT " Ende : ";Ende FOR i=Start TO Ende LOCATE 5,1 PRINT " Jetzt : ";i GET #1,i IF Gk THEN Hier$=UCASE$(In$(Sfeld)) END IF IF INSTR(Hier$,Such$) THEN CLS:PRINT "Suchbegriff gefunden in Datensatz # ";i GOSUB Unterbrechung PRINT "Feldinhalt :" PRINT In$(Sfeld) WeiterSuchen: LOCATE 4,3:LINE INPUT "Weitersuchen (J/N) ";Ws$ Ws$=UCASE$(LEFT$(Ws$,1)) IF Ws$<>"J" AND Ws$<>"N" THEN WeiterSuchen IF Ws$="N" THEN Gefunden=i:Satz=i:i=Ende+1 ELSE Gefunden=i CLS LOCATE 2,1 PRINT "Duchsuchter Bereich:" PRINT " Start : ";Start PRINT " Ende : ";Ende END IF END IF NEXT i Satz=Gefunden IF Satz<1 THEN Satz=1 IF Satz>Msatz THEN Satz=Msatz END IF WINDOW CLOSE 9 CALL SetWindowTitles(WINDOW(7),SADD(w.t$),-1) END IF IF Co$="+" THEN IF Satz1 THEN Satz=Satz-1 ELSE BEEP END IF END IF IF Co$=CHR$(31) THEN Satz=Satz-10 IF Satz<=0 THEN BEEP Satz=1 END IF END IF IF Co$=CHR$(30) THEN Satz=Satz+10 IF Satz>Msatz THEN BEEP Satz=Msatz END IF END IF IF Co$="G" THEN LOCATE 22,1 INPUT "Wohin (* - letzter Satz) ";N$ IF N$="*" THEN Satz=Msatz ELSE Satz=ABS(INT(VAL(N$))) IF Satz=0 THEN Satz=1 BEEP END IF IF Satz>Msatz THEN Satz=Msatz BEEP END IF END IF END IF IF Co$="D" THEN FOR i=1 TO 11 LSET In$(i)="" NEXT i PUT #1,Satz END IF IF Co$="P" THEN IF Drucker=1 THEN FOR i=1 TO Anzmsk LPRINT Bezeichnung$(i);" : ";In$(i) NEXT i LPRINT LPRINT END IF END IF IF Co$="E" THEN FOR i=1 TO 11 Ein$(i)=In$(i) NEXT i GOSUB Eing FOR i=1 TO 11 LSET In$(i)=Ein$(i) NEXT i PUT #1,Satz END IF WEND Co$="" CLOSE #1 GOSUB FadeOut WINDOW CLOSE 5 GOSUB FensterWieVorher RETURN Loeschen: CALL REQUEST("Programm wirklich","neu starten ?"," Ja "," Nein ",req%) IF req%<>0 THEN RUN END IF WINDOW OUTPUT 2 RETURN Ende: CALL REQUEST("WOLLEN SIE DAS PROGRAMM","WIRKLICH BEENDEN ?"," Ja "," Nein ",req%) IF req%<>0 THEN WINDOW CLOSE 2 SCREEN CLOSE 1 MENU RESET LIBRARY CLOSE END 'SYSTEM END IF WINDOW OUTPUT 2 RETURN DruckeAlles: w.t$="MaxiDAT. Alles ausdrucken"+CHR$(0) GOSUB FensterNeuRichten LINE (0,0)-(640,255),0,bf:CLS LINE INPUT "Filename -> ";DNam$ IF DNam$="" THEN GOSUB FensterWieVorher:RETURN END IF Datnam$=Drive$+Pfad$+DNam$+".DATEN" Datinfnam$=Drive$+Pfad$+DNam$+".INFOS" GOSUB LeseInfos LPRINT "Filename : ";DNam$ LPRINT "Anzahl von Einträgen :";Satznummer-1 LPRINT "Druckdatum : "; Datum DTM$ LPRINT DTM$ LPRINT "Zeit : ";TIME$ LPRINT LPRINT CLS OPEN "r",#1,Datnam$,550 FIELD #1,Laenge(1) AS In$(1),Laenge(2) AS In$(2),Laenge(3) AS In$(3),Laenge(4) AS In$(4),Laenge(5) AS In$(5),Laenge(6) AS In$(6),Laenge(7) AS In$(7),Laenge(8) AS In$(8),Laenge(9) AS In$(9),Laenge(10) AS In$(10),Laenge(11) AS In$(11) PRINT "Daten drucken . . ." PRINT "Ich drucke momentan #" FOR i=1 TO Satznummer-1 LOCATE 5,5 PRINT i GET #1,i FOR Ii=1 TO Anzmsk LPRINT Bezeichnung$(Ii);" : "; LPRINT In$(Ii) NEXT Ii LPRINT NEXT i CLOSE #1 LPRINT LPRINT LPRINT "--- Ende des Files ---" LPRINT LPRINT LPRINT GOSUB FensterWieVorher RETURN DruckeAllesOHNE: w.t$="MaxiDAT. Alle Daten ohne 'Kopf' ausdrucken"+CHR$(0) GOSUB FensterNeuRichten LINE (0,0)-(640,255),0,bf:CLS LINE INPUT "Filename -> ";DNam$ IF DNam$="" THEN GOSUB FensterWieVorher RETURN END IF Datnam$=Drive$+Pfad$+DNam$+".DATEN" Datinfnam$=Drive$+Pfad$+DNam$+".INFOS" GOSUB LeseInfos OPEN "r",#1,Datnam$,550 FIELD #1,Laenge(1) AS In$(1),Laenge(2) AS In$(2),Laenge(3) AS In$(3),Laenge(4) AS In$(4),Laenge(5) AS In$(5),Laenge(6) AS In$(6),Laenge(7) AS In$(7),Laenge(8) AS In$(8),Laenge(9) AS In$(9),Laenge(10) AS In$(10),Laenge(11) AS In$(11) PRINT "Daten drucken . . ." PRINT "Ich drucke momentan #" FOR i=1 TO Satznummer-1 LOCATE 5,5 PRINT i GET #1,i FOR Ii=1 TO Anzmsk LPRINT In$(Ii) NEXT Ii LPRINT NEXT i CLOSE #1 LPRINT LPRINT GOSUB FensterWieVorher RETURN DruckeAuswahl: w.t$="MaxiDAT. Bestimmte Daten drucken"+CHR$(0) GOSUB FensterNeuRichten LINE (0,0)-(640,255),0,bf:CLS LINE INPUT "Filename -> ";DNam$ IF DNam$="" THEN GOSUB FensterWieVorher:RETURN END IF INPUT "Welchen Datensatz (Nr. eingeben) ";Satz Datnam$=Drive$+Pfad$+DNam$+".DATEN" Datinfnam$=Drive$+Pfad$+DNam$+".INFOS" GOSUB LeseInfos LPRINT "Filename :";Datnam$ LPRINT "Datensatz #";Satz LPRINT OPEN "r",#1,Datnam$,550 FIELD #1,Laenge(1) AS In$(1),Laenge(2) AS In$(2),Laenge(3) AS In$(3),Laenge(4) AS In$(4),Laenge(5) AS In$(5),Laenge(6) AS In$(6),Laenge(7) AS In$(7),Laenge(8) AS In$(8),Laenge(9) AS In$(9),Laenge(10) AS In$(10),Laenge(11) AS In$(11) GET #1,Satz FOR i=1 TO Anzmsk LPRINT Bezeichnung$(i);" : "; LPRINT In$(i) NEXT i CLOSE #1 LPRINT LPRINT GOSUB FensterWieVorher RETURN ChangeDir: WINDOW 5,"Neuen Pfad eingeben : ",(1,20)-(400,30),16,1 LINE INPUT Pfad$ WINDOW CLOSE 5 WINDOW OUTPUT 2 IF Pfad$<>"" THEN l=LEN(Pfad$) IF MID$(Pfad$,l,1)<>"/" THEN Pfad$=Pfad$+"/" l=l+1 END IF IF MID$(Pfad$,1,1)=":" THEN Pfad$=MID$(Pfad$,2,l-1) END IF IF MID$(Pfad$,4,1)=":" THEN Drive$=MID$(Pfad$,1,4) Pfad$=MID$(Pfad$,5,l-4) END IF ELSE Pfad$="MaxiDAT/Daten/" END IF RETURN ChangeDrive: CALL REQUEST("Welches Laufwerk","benutzen ??",d1$,d2$,req%) IF req%<>0 THEN Drive$=d1$ ELSE Drive$=d2$ END IF WINDOW OUTPUT 2 RETURN ZeigeDir: wd&=WINDOW(7) WINDOW 6,"Inhalt: "+Drive$+Pfad$,,31,1 w&=WINDOW(7) CALL MoveWindow(w&,-PEEKW(w&+4),-PEEKW(w&+6)) CALL SizeWindow(w&,320-PEEKW(w&+8),255-PEEKW(w&+10)) CALL MoveWindow(w&,320,0) CALL ClearMenuStrip(w&) Inhalt$=Drive$+MID$(Pfad$,1,LEN(Pfad$)-1) FILES Inhalt$ WINDOW 2 CALL ActivateWindow(wd&) CALL MoveWindow(wd&,-PEEKW(wd&+4),-PEEKW(wd&+6)) CALL SizeWindow(wd&,320-PEEKW(wd&+8),255-PEEKW(wd&+10)) RETURN DeleteFile: w.t$="MaxiDAT. Datei löschen (VORSICHT!!)"+CHR$(0) GOSUB FensterNeuRichten LINE (0,0)-(640,255),0,bf:CLS LINE INPUT "Filename ? ";DNam$ IF DNam$<>"" THEN DNam$=Drive$+Pfad$+DNam$ CALL REQUEST("Diese Datei wirklich","L Ö S C H E N ?"," Ja "," NEIN !! ",req%) IF req%<>0 THEN KILL DNam$ END IF END IF GOSUB FensterWieVorher RETURN GrafikDateiAnlegen: w.t$="MaxiDAT. Anlegen einer Datei für Grafikdaten"+CHR$(0) GOSUB FensterNeuRichten GOSUB LoescheVariablen LINE (0,0)-(640,255),0,bf:CLS PRINT "Grafikdatei anlegen ..." LINE INPUT "Dateiname ? ";nam$ IF nam$="" THEN GOSUB FensterWieVorher:RETURN END IF Datinfnam$=Drive$+Pfad$+nam$+".INFOS" OPEN Datinfnam$ FOR OUTPUT AS #2 WRITE #2,11 WRITE #2,2 WRITE #2,1 WRITE #2,"Name" WRITE #2,5 WRITE #2,"Value" WRITE #2,5 CLOSE #2 GOSUB FensterWieVorher RETURN Zeichnen: w.t$="MaxiDAT. Grafik zeichnen"+CHR$(0) GOSUB FensterNeuRichten GOSUB LoescheVariablen LINE (0,0)-(640,255),0,bf:CLS M=0 PRINT "Grafik zeichnen ... " LINE INPUT "Filename ? ";nam$ IF nam$="" THEN GOSUB FensterWieVorher:RETURN END IF Datnam$=Drive$+Pfad$+nam$+".DATEN" Datinfnam$=Drive$+Pfad$+nam$+".INFOS" GOSUB LeseInfos CLS IF schon.benutzt=1 THEN ERASE b$ ERASE Wert END IF schon.benutzt=1 CLS DIM b$(Satznummer),Wert(Satznummer) OPEN "R",#1,Datnam$,550 FIELD #1,Laenge(1) AS In$(1),Laenge(2) AS In$(2),Laenge(3) AS In$(3),Laenge(4) AS In$(4),Laenge(5) AS In$(5),Laenge(6) AS In$(6),Laenge(7) AS In$(7),Laenge(8) AS In$(8),Laenge(9) AS In$(9),Laenge(10) AS In$(10),Laenge(11) AS In$(11) FOR i=1 TO Satznummer-1 GET #1,i b$(i)=In$(1) Wert(i)=VAL(In$(2)) NEXT i CLOSE #1 GesamtWert=0 : MaxWert=0 : Anzahl=0 FOR i=1 TO Satznummer GesamtWert=GesamtWert+Wert(i) IF Wert(i) <> 0 THEN INC Anzahl IF Wert(i) > MaxWert THEN MaxWert=Wert(i) END IF END IF NEXT i PRINT "Der höchste vorkommende Wert ist y=";MaxWert PRINT "Wenn Sie diesen Wert ändern wollen, geben Sie den neuen Wert jetzt ein!" LINE INPUT "Größte y-Achsen-Beschriftung (od. RETURN) ?";M$ IF VAL(M$)>MaxWert THEN MaxWert=VAL(M$) END IF CALL REQUEST("Welche Art Grafik","soll ich zeichnen ?","Balken","Linien",erg%) GOSUB FadeOut IF erg%=0 THEN GOSUB Linien ELSE GOSUB Balken END IF GOSUB FensterWieVorher RETURN ProgrammInfo: w.t$="MaxiDAT. "+Version$+" -- Programminformationen"+CHR$(0) GOSUB FensterNeuRichten LINE (0,0)-(640,255),0,bf:CLS LOCATE 1,1 txt$="MaxiDAT - AMIGA" CALL Text(RastPort&,SADD(txt$),LEN(txt$)) LOCATE 2,1 txt$="---------------" CALL Text(RastPort&,SADD(txt$),LEN(txt$)) LOCATE 4,1 txt$="Version 2.50 - Public Domain (Shareware)" CALL Text(RastPort&,SADD(txt$),LEN(txt$)) LOCATE 9,1 txt$="Wenn Ihnen dieses Programm gefällt, senden Sie bitte 20,-- an :" CALL Text(RastPort&,SADD(txt$),LEN(txt$)) LOCATE 13,1 COLOR 2 txt$=" CHRISTOPH HUST" CALL Text(RastPort&,SADD(txt$),LEN(txt$)) LOCATE 14,1 txt$=" MAINZER STRASSE 30" CALL Text(RastPort&,SADD(txt$),LEN(txt$)) LOCATE 15,1 txt$=" D-5407 BOPPARD 1" CALL Text(RastPort&,SADD(txt$),LEN(txt$)) LOCATE 17,1 COLOR 3 LOCATE 19,1 txt$="----- BITTE EINE BELIEBIGE TASTE DRÜCKEN -----" CALL Text(RastPort&,SADD(txt$),LEN(txt$)) GOSUB FadeIn WHILE INKEY$="" WEND GOSUB FadeOut GOSUB FensterWieVorher RETURN Eing: WHILE Jn$<>"J" CLS LOCATE 1,1 txt$="Daten eingeben. Satz # "+STR$(Satz) CALL Text(RastPort&,SADD(txt$),LEN(txt$)) FOR i=1 TO Anzmsk COLOR 3 LOCATE i+2,1 txt$=Bezeichnung$(i)+":" CALL Text(RastPort&,SADD(txt$),LEN(txt$)) COLOR 2 LOCATE i+2,Maxbezlaenge+4 txt$=Ein$(i) CALL Text(RastPort&,SADD(txt$),LEN(txt$)) NEXT i COLOR 1 FOR i=1 TO Anzmsk LOCATE i+2,Maxbezlaenge+4 LINE INPUT Eing$ IF Eing$<>"" THEN Ein$(i)=Eing$ END IF NEXT i CLS LOCATE 1,1 txt$="Daten eingeben. Satz # "+STR$(Satz) CALL Text(RastPort&,SADD(txt$),LEN(txt$)) FOR i=1 TO Anzmsk COLOR 3 LOCATE i+2,1 txt$=Bezeichnung$(i)+":" CALL Text(RastPort&,SADD(txt$),LEN(txt$)) COLOR 2 LOCATE i+2,Maxbezlaenge+4 txt$=Ein$(i) CALL Text(RastPort&,SADD(txt$),LEN(txt$)) NEXT i COLOR 1 LOCATE 20,1 Jn$="" INPUT " O.K. [J/N] ";Jn$ Jn$=LEFT$(UCASE$(Jn$),1) WEND Jn$="" RETURN LeseInfos: OPEN Datinfnam$ FOR INPUT AS #2 INPUT #2,Maxbezlaenge INPUT #2,Anzmsk INPUT #2,Satznummer FOR i=1 TO Anzmsk LINE INPUT #2,Bezeichnung$(i) Bezeichnung$(i)=MID$(Bezeichnung$(i),2,LEN(Bezeichnung$(i))-2) INPUT #2,Laenge(i) NEXT i CLOSE #2 RETURN Datum: MENU OFF DTM$=DATE$ MENU ON RETURN SUB Datum(a$) STATIC MENU OFF a$=DATE$ MENU ON END SUB Fehler: TIMER OFF Fr=ERR WINDOW 2:WINDOW OUTPUT 2:CALL ActivateWindow(WINDOW(7)) LINE (0,0)-(640,255),0,bf BEEP PALETTE 0,1,1,1:PALETTE 1,0,0,0:PALETTE 2,1,0,0:PALETTE 3,0,0.5,1 CLS IF Fr=64 THEN COLOR 3 PRINT "FEHLER: Falscher Dateiname." ELSEIF Fr=57 THEN COLOR 3 PRINT "FEHLER beim I/O aufgetreten." ELSEIF Fr=68 THEN COLOR 3 PRINT "FEHLER: Gerät nicht ansprechbar." ELSEIF Fr=61 THEN COLOR 3 PRINT "FEHLER: Diese Diskette ist voll." ELSEIF Fr=53 THEN COLOR 3 PRINT "FEHLER: Datei nicht gefunden." ELSEIF Fr=14 THEN COLOR 3 PRINT "FEHLER: Kein Stapelspeicher frei." ELSEIF Fr=7 THEN COLOR 3 PRINT "FEHLER: Speichermangel." ELSEIF Fr=70 THEN COLOR 3 PRINT "ACHTUNG: Diese Disk ist schreibgeschützt." ELSEIF Fr=49 THEN COLOR 3 PRINT "FEHLER: Unbekannte Diskette." ELSE COLOR 3:PRINT "F e h l e r a u f g e t r e t e n !" COLOR 2:PRINT :PRINT "BASIC-Code :";Fr COLOR 3:PRINT :PRINT "Entschuldigung ... !" END IF PRINT PRINT "Beliebige Taste drücken !!" WHILE INKEY$="":WEND:COLOR 1 WINDOW 2 WINDOW OUTPUT 2 CLOSE FI=1 RESUME Hauptprogramm LoescheVariablen: FOR i%=1 TO 11 Laenge(i%)=0 Bezeichnung$(i%)="" Ein$(i%)="" NEXT i% RETURN MenueVervollstaendigen: MenuStrip&=PEEKL(WINDOW(7)+28) FirstItem&=PEEKL(MenuStrip&+18) POKEW FirstItem&+12,PEEKW(FirstItem&+12) OR 4 POKE FirstItem&+26,ASC("a") NextItem&=PEEKL(FirstItem&) POKEW NextItem&+12,PEEKW(NextItem&+12) OR 4 POKE NextItem&+26,ASC("e") NextItem&=PEEKL(NextItem&) POKEW NextItem&+12,PEEKW(NextItem&+12) OR 4 POKE NextItem&+26,ASC("b") NextItem&=PEEKL(NextItem&) POKEW NextItem&+12,PEEKW(NextItem&+12) OR 4 POKE NextItem&+26,ASC("n") NextItem&=PEEKL(PEEKL(NextItem&)) POKEW NextItem&+12,PEEKW(NextItem&+12) OR 4 POKE NextItem&+26,ASC("q") FirstItem&=PEEKL(PEEKL(MenuStrip&)+18) POKEW FirstItem&+12,PEEKW(FirstItem&+12) OR 4 POKE FirstItem&+26,ASC("m") NextItem&=PEEKL(FirstItem&) POKEW NextItem&+12,PEEKW(NextItem&+12) OR 4 POKE NextItem&+26,ASC("o") NextItem&=PEEKL(NextItem&) POKEW NextItem&+12,PEEKW(NextItem&+12) OR 4 POKE NextItem&+26,ASC("b") FirstItem&=PEEKL(PEEKL(PEEKL(MenuStrip&))+18) POKEW FirstItem&+12,PEEKW(FirstItem&+12) OR 4 POKE FirstItem&+26,ASC("u") NextItem&=PEEKL(FirstItem&) POKEW NextItem&+12,PEEKW(NextItem&+12) OR 4 POKE NextItem&+26,ASC("l") NextItem&=PEEKL(NextItem&) POKEW NextItem&+12,PEEKW(NextItem&+12) OR 4 POKE NextItem&+26,ASC("d") NextItem&=PEEKL(NextItem&) POKEW NextItem&+12,PEEKW(NextItem&+12) OR 4 POKE NextItem&+26,ASC("k") FirstItem&=PEEKL(PEEKL(PEEKL(PEEKL(MenuStrip&)))+18) POKEW FirstItem&+12,PEEKW(FirstItem&+12) OR 4 POKE FirstItem&+26,ASC("g") NextItem&=PEEKL(FirstItem&) POKEW NextItem&+12,PEEKW(NextItem&+12) OR 4 POKE NextItem&+26,ASC("z") FirstItem&=PEEKL(PEEKL(PEEKL(PEEKL(PEEKL(MenuStrip&))))+18) POKEW FirstItem&+12,PEEKW(FirstItem&+12) OR 4 POKE FirstItem&+26,ASC("p") FirstItem&=PEEKL(PEEKL(PEEKL(PEEKL(PEEKL(PEEKL(MenuStrip&)))))+18) POKEW FirstItem&+12,PEEKW(FirstItem&+12) OR 4 POKE FirstItem&+26,ASC("w") RETURN Linien: WINDOW 10,"Grafikausgabe (="+nam$+"=)",,31,1 w&=WINDOW(7) CALL MoveWindow(w&,-PEEKW(w&+4),-PEEKW(w&+6)) CALL SizeWindow(w&,640-PEEKW(w&+8),255-PEEKW(w&+10)) CALL ClearMenuStrip(w&) LINE (0,0)-(640,255),0,bf:CLS COLOR 1 FaktorX = 540/Anzahl Faktor = 205/MaxWert i=0:x=0:y=0:x2=0:y2=0 FOR Ii=1 TO Anzahl Check2: INC i IF Wert(i) = 0 THEN Check2 x=20+(FaktorX*Ii) y=220-(Wert(i)*Faktor) IF x2=0 AND y2=0 THEN x2=x y2=y END IF LINE (x2,y2)-(x,y) LOCATE 29, INT (x/8) PRINT LEFT$(b$(i),4); x2=x y2=y NEXT Ii LOCATE 1+INT(10/8),1 PRINT USING "#####.#";MaxWert LOCATE 2+INT(110/8),1 PRINT USING "#####.#";MaxWert/2 LOCATE 1+INT(215/8),1 PRINT USING "#####.#";0 COLOR 3 PATTERN 52428 LINE (60,15)-(630,15) LINE (60,118)-(630,118) LINE (60,215)-(630,215) PATTERN 65535 COLOR 1 w&=WINDOW(7) WINDOW 2:CALL ActivateWindow(WINDOW(7)) CALL WindowToFront(w&) RETURN Balken: WINDOW CLOSE 11 WINDOW 11,"Grafikausgabe (="+nam$+"=) ",,31,1 w&=WINDOW(7) CALL MoveWindow(w&,-PEEKW(w&+4),-PEEKW(w&+6)) CALL SizeWindow(w&,640-PEEKW(w&+8),255-PEEKW(w&+10)) CALL ClearMenuStrip(w&) LINE (0,0)-(640,255),0,bf:CLS COLOR 1 IF MaxWert <> 0 THEN BalkenBreite = INT(560/Anzahl) StreckFaktor=210/MaxWert i=0 Farbe=1 FOR x=1 TO Anzahl Check: INC i IF Wert(i) = 0 THEN Check LINE(70 +((x-1)*BalkenBreite),215-Wert(i)*StreckFaktor)-(70+(x*BalkenBreite),215),Farbe,bf LOCATE 29,3+INT(((70+((x-1)*BalkenBreite)+0.5*BalkenBreite)/8)-0.5*LEN(b$(i))) COLOR Farbe PRINT b$(i); INC Farbe IF Farbe=4 THEN Farbe=1 NEXT x PATTERN 52428 COLOR 2 LINE (50,5)-(630,5) LINE (50,215)-(630,215) LINE (50,110)-(630,110) PATTERN 65535 COLOR 1 LOCATE 10/8,1 PRINT USING "####.#";MaxWert LOCATE 110/8,1 PRINT USING "####.#";MaxWert/2 LOCATE 215/8,1 PRINT USING "####.#";0 END IF w&=WINDOW(7) WINDOW 2:CALL ActivateWindow(WINDOW(7)) CALL WindowToFront(w&) RETURN SUB REQUEST(z2$,z1$,ja$,nein$,e%) STATIC SHARED Version$ z1$=z1$+CHR$(0):z2$=z2$+CHR$(0) ja$=ja$+CHR$(0):nein$=nein$+CHR$(0) CALL ITXT(z2&,10,10,z2$,0,adr1&) CALL ITXT(z1&,10,20,z1$,z2&,adr2&) CALL ITXT(ja&,5,3,ja$,0,adr3&) CALL ITXT(nein&,5,3,nein$,0,adr4&) r$="Program Request"+CHR$(0) CALL SetWindowTitles(WINDOW(7),SADD(r$),-1) e%=AutoRequest%(WINDOW(7),z1&,ja&,nein&,0,0,300,80) r$="MaxiDAT "+Version$+CHR$(0) CALL SetWindowTitles(WINDOW(7),SADD(r$),-1) CALL FreeMem(adr1&,LEN(z2$)) CALL FreeMem(adr2&,LEN(z1$)) CALL FreeMem(adr3&,LEN(ja$)) CALL FreeMem(adr4&,LEN(nein$)) CALL FreeMem(z1&,20) CALL FreeMem(z2&,20) CALL FreeMem(ja&,20) CALL FreeMem(nein&,20) END SUB SUB ITXT(adr&,l%,o%,txt$,N&,tadr&) STATIC tadr&=AllocMem&(LEN(txt$),65540) FOR i=1 TO LEN(txt$) POKE tadr&+i-1,ASC(MID$(txt$,i,1)) NEXT i adr&=AllocMem&(20,65540) POKE adr&,2 POKE adr&+2,0 POKE adr&+4,2 POKEW adr&+4,l% POKEW adr&+6,o% POKEL adr&+12,tadr& POKEL adr&+16,N& END SUB FadeOut: FOR i=0 TO 1 r=c(i,0):g=c(i,1):b=c(i,2) FOR c=1 TO 0 STEP -0.03 IF c<=r THEN rr=c ELSE rr=r END IF IF c<=g THEN gg=c ELSE gg=g END IF IF c<=b THEN bb=c ELSE bb=b END IF PALETTE i,rr,gg,bb NEXT c NEXT i PALETTE 3,0,0,0:PALETTE 2,0,0,0 RETURN FadeIn: FOR i=0 TO 3 r=c(i,0):g=c(i,1):b=c(i,2) ff=1 c=0 WHILE ff>0 IF c>r THEN rr=r ELSE rr=c END IF IF c>g THEN gg=g ELSE gg=c END IF IF c>b THEN bb=b ELSE bb=c END IF PALETTE i,rr,gg,bb IF c>r AND c>g AND c>b THEN ff=-1 c=c+0.05 WEND NEXT i RETURN FensterNeuRichten: CALL SetWindowTitles(WINDOW(7),SADD(w.t$),-1) w.o%=PEEKW(WINDOW(7)+4):w.l%=PEEKW(WINDOW(7)+6) w.b%=PEEKW(WINDOW(7)+8):w.h%=PEEKW(WINDOW(7)+10) CALL MoveWindow(WINDOW(7),-w.o%,-w.l%) CALL SizeWindow(WINDOW(7),640-w.b%,255-w.h%) RETURN FensterWieVorher: CALL SizeWindow(WINDOW(7),-(640-w.b%),-(255-w.h%)) CALL MoveWindow(WINDOW(7),w.o%,w.l%) RETURN Aufraeumen: WINDOW CLOSE 5 WINDOW CLOSE 6 WINDOW CLOSE 10 WINDOW CLOSE 11 WINDOW 2 CALL ActivateWindow(WINDOW(7)) CALL MoveWindow(WINDOW(7),-PEEKW(WINDOW(7)+4),-PEEKW(WINDOW(7)+6)) CALL SizeWindow(WINDOW(7),640-PEEKW(WINDOW(7)+8),255-PEEKW(WINDOW(7)+10)) LINE (0,0)-(640,255),0,bf:CLS RETURN Unterbrechung: SOUND 800,5:RETURN SUB INC(a) STATIC a=a+1 END SUB SUB DEC(a) STATIC a=a-1 END SUB